package com.yuw.hw02;

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

import org.junit.jupiter.api.Test;

public class TestDriver {

	@Test
	public void test01() {
		System.out.println("请输入一个目录：");
		Scanner sc = new Scanner(System.in);
		String strPath = sc.nextLine();
		// 调用子方法遍历该目录
		pintMe(strPath);
	}

	/**
	 * 非递归遍历目录中的所有文件
	 * 
	 * @param strPath
	 */
	private void pintMe(String strPath) {
		// 非递归，文件放入一个遍历的List中（或者栈中）
		List<File> lstFiles = new ArrayList<>();
		// 创建文件对象
		File file = new File(strPath);

		// 判断文件是否存在
		if (file.exists()) {
			// 将文件放入遍历链表中
			lstFiles.add(file);
			// 当文件遍历的链表不为空时，循环遍历所有的文件信息
			while (lstFiles != null && lstFiles.size() > 0) {
				// 取出第一个文件
				File subFile = lstFiles.remove(0);
				// 判断是否为目录
				if (subFile.isDirectory()) {
					// 打印
					System.out.println("目录：" + subFile.getAbsolutePath());
					// 获取目录中的所有的子文件
					File[] subFiles = subFile.listFiles();
					// 如果是目录，将所有的子文件放入遍历链表中					
					Collections.addAll(lstFiles, subFiles);
				} else {
					// 文件 直接打印
					System.out.println("文件：" + subFile.getAbsolutePath());
				}
			}
		}

	}
}